package lcd

// MenuMode 菜单模式
type MenuMode int

const (
	MenuModeStat MenuMode = iota // 状态模式
	MenuModeView                 // 查看模式
	MenuModeMenu                 // 菜单模式
	MenuModeTip                  // 提示模式
)

// StatOpt 状态选项
type StatOpt int

const (
	StatOptIdle      StatOpt = iota
	StatOptAutoHeat1         // 主加热
	StatOptAutoHeat2         // 副加热
	StatOptAutoHeat3         // 主副加热
	StatOptAutoShot
	StatOptAutoHeat1Shot
	StatOptAutoHeat2Shot
	StatOptAutoHeat3Shot
	StatOptAutoError
	StatOptForceHeat1
	StatOptForceHeat2
	StatOptForceHeat3
	StatOptForceShot
	StatOptForceHeat1Shot
	StatOptForceHeat2Shot
	StatOptForceHeat3Shot
	StatOptWarn
)

// ViewOpt 查看选项
type ViewOpt int

const (
	ViewOptTemperature ViewOpt = iota
	ViewOptDuty
	ViewOptSmokeSensor // 显示烟感数量
	ViewOptOilData
)

// MenuOpt 菜单选项
type MenuOpt int

const (
	MenuOptT0 MenuOpt = iota // close pump
	MenuOptT1                // open major heater
	MenuOptT2                // open minor heater
	MenuOptT3                // open pump
	MenuOptT4                // close minor heater
	MenuOptT5                // close major heater
	MenuOptP0
	MenuOptP1
	MenuOptPDef
	MenuOptOilLimit
	MenuOptWaterLimit
)

// TipOpt 提示选项
type TipOpt int

const (
	TipOptOK TipOpt = iota
	TipOptErr
	TipOptBLEUpgradeApp
)

// MenuStatus 菜单状态
type MenuStatus struct {
	Mode      MenuMode // 当前菜单模式
	StatOpt   StatOpt  // 状态模式选项
	ViewOpt   ViewOpt  // 查看模式选项
	MenuOpt   MenuOpt  // 菜单模式选项
	TipOpt    TipOpt   // 提示模式选项
	DispCnter int      // 显示计数器
}

// MenuMsg 菜单消息
type MenuMsg struct {
	ID MenuMsgID // 消息ID
	P1 uint32    // 参数1
}

// MenuMsgID 菜单消息ID
type MenuMsgID int

const (
	MenuMsgIDUpdateImmediately MenuMsgID = iota // 立即更新菜单
)
